package mysql

import (
	"e_mall_server/common"
	"e_mall_server/models"
	"errors"
	"go.uber.org/zap"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-05-19 15:55
 */

// LoginUser 用户登录信息验证
func LoginUser(p *models.UserLoginParam) (user models.User, err error) {
	err = db.Where("phone = ? and password = ?", p.Phone, p.Password).First(&user).Error
	return
}

// GetUserList 获取用户列表接口
func GetUserList() ([]models.User, error) {
	var UserList []models.User
	if err := db.Preload("Role").Find(&UserList).Error; err != nil {
		return nil, err
	}
	return UserList, nil
}

// AddUser 添加用户信息
func AddUser(User *models.User) error {
	zap.L().Debug("mysql.AddUser()", zap.Any("用户信息", User))
	// 将密码进行加密
	User.Password = common.Md5(User.Password)
	// 进行数据库添加操作
	return db.Create(User).Error
}

// UpdateUser 修改用户信息
func UpdateUser(User *models.User) int64 {
	// 进行数据库修改操作
	return db.Model(&User).Updates(&User).RowsAffected
}

// DeleteUserById 通过用户id删除用户数据
func DeleteUserById(id int64) int64 {
	return db.Delete(&models.User{Id: id}).RowsAffected
}

// CheckUserExist 检查用户是否存在
func CheckUserExist(username string) error {
	var UserList []models.User
	db.Where("username = ?", username).Find(&UserList)
	if len(UserList) > 0 {
		return errors.New("此用户已存在")
	}
	return nil
}

// GetUserDetailById 通过用户id获取用户详细信息
func GetUserDetailById(id int64) (User models.User, err error) {
	User.Id = id
	err = db.Preload("Role").Where("id = ?", id).Find(&User).Error
	return
}
